package cliente;

import java.util.ArrayList;

import base_de_dados.Entidade;
import base_de_dados.GestorBD;

public class Reclamacao implements Entidade{
    private String descricao;
    private Cliente cliente;
    private LinhaFactura linha_factura;
    private int id;
    private boolean vista = false;

    public Reclamacao(int id, String descricao, Cliente cliente,
			LinhaFactura linha_factura) {
		super();
		this.descricao = descricao;
		this.cliente = cliente;
		this.linha_factura = linha_factura;
		this.id = id;
	}
	
    public Reclamacao(int id, String descricao, Cliente cliente) {
		super();
		this.descricao = descricao;
		this.cliente = cliente;
		this.linha_factura = null;
		this.id = id;
	}
    
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public boolean isVista() {
		return vista;
	}
	public void setVista(boolean vista) {
		this.vista = vista;
	}
	public Cliente getCliente() {
		return cliente;
	}
	public LinhaFactura getLinha_factura() {
		return linha_factura;
	}
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@Override
	public ArrayList<Object> getListaValores() {
		ArrayList<Object> list = new ArrayList<Object>();
		list.add(descricao);
		list.add(cliente.getId());
		if(linha_factura != null){
			list.add(linha_factura.getId());
		}else{
			list.add(null);
		}
		list.add(vista);
		return list;
	}

	@Override
	public boolean update() {
		GestorBD bd = Gestores.Gestores.getGestor_bd();
		if(bd != null){
			bd.update(this);
			boolean result = this.cliente.update() && this.linha_factura.update();
			return result;
		}
		return false;
	}

	@Override
	public boolean remover() {
		GestorBD bd = Gestores.Gestores.getGestor_bd();
		if(bd != null){
			bd.remove(this);
			return true;
		}
		return false;
	}

	@Override
	public ArrayList<String> getListaParametros() {
		ArrayList<String> list = new ArrayList<String>();
		list.add("descricao");
		list.add("cliente");
		list.add("linha_factura");
		list.add("vista");
		return list;
	}

	@Override
	public String getSearchString() {
		String search = "";
		if(descricao != null){
			search += " AND descricao LIKE '%" + descricao + "%'";
		}else{
			search += " AND descricao LIKE '%" + "" + "%'";
		}
		if(cliente != null){
			search += " AND cliente = " + cliente.getId();
		}else{
			search += " AND cliente >= " + 0;
		}
		if(linha_factura != null){
			search += " AND linha_factura = " + linha_factura.getId();
		}else{
			search += " AND linha_factura >= " + 0;
		}
		return search;
	}

}
